import dayjs from "dayjs";
import relativeTime from "dayjs/plugin/relativeTime";
import weekday from 'dayjs/plugin/weekday'
import localeData from 'dayjs/plugin/localeData'; // 添加 localeData 插件
import 'dayjs/locale/zh-cn'; // 引入中文语言包

dayjs.extend(relativeTime);
dayjs.extend(weekday);
dayjs.extend(localeData);
dayjs.locale('zh-cn');

class DayjsUtils {
    /**
     *时间格式化
     * @param {string|date|number} date 时间
     * @param {string} 格式化格式
     */
    format(date, format = "YYYY-MM-DD HH:mm") {
        return dayjs(date).format(format);
    }

    /**
     * 时间多久之前
     * @param {string|date|number} data 时间
     * @param {string|date|number} currentDate 相对于的时间
     */
    dateFrom(date, currentDate = new Date()) {
        if (date) {
            return dayjs(date).locale("zh-cn").from(currentDate);
        }
    }

    /**
     * 时间多久之后
     * @param {string|date|number} date 时间
     * @param {string|date|number} currentDate 相对于的时间
     */
    dateTo(date, currentDate = new Date()) {
        if (date) {
            return dayjs(currentDate).locale("zh-cn").to(date);
        }
    }

    /**
     * @Description:时间比较
     */
    isBefore(current, date = new Date()) {
        return dayjs(date).isBefore(current)
    }

    /**
     * 获取当前时间的 Unix 时间戳（秒级）
     * @returns {number} 当前时间的 Unix 时间戳
     */
    unixNow() {
        return dayjs().unix();
    }

    /**
     * 获取当前时间的毫秒级时间戳
     * @returns {number} 当前时间的毫秒级时间戳
     */
    millisecondNow() {
        return dayjs().valueOf();
    }
}

export default new DayjsUtils();